package com.mate.cloud.uid.config;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

import java.nio.charset.StandardCharsets;
import java.util.Locale;

/**
 * 配置国际化
 *
 * @author: MI
 * @email: 448341911@qq.com
 * @createTime: 2024/5/24 16:11
 * @updateUser: MI
 * @updateTime: 2024/5/24 16:11
 * @updateRemark: 修改内容
 * @version: v1.0
 */
@Configuration
public class MessageConfig {


    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver localeResolver = new SessionLocaleResolver();
        localeResolver.setDefaultLocale(Locale.CHINA);
        return localeResolver;
    }

    /**
     * <p>定义业务系统消息配置文件的基本名称（basename）。
     * 消息配置文件的命名格式为“[基本名称]_[语言种类].properties
     * 例如message-error.properties和message-error_zh_CN.properties
     * 的basename都为"message-error"。
     * 系统首先查找和指定语言种类对应的消息配置文件，如果没有找到，
     * 就查找父一级的消息文件.
     * 例如message-error_zh_CN.properties为简体中文的消息文件,
     * 如果在CLASSPATH中没有找到该文件，系统将查找名为
     * message-error.properties的文件
     * 可以在这里定义多个消息配置文件的basename。
     * 请参考java.util.ResourceBundle的说明文档.</p>
     *
     * @return
     */
    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageBundle = new ReloadableResourceBundleMessageSource();
        // 刷新资源文件的周期，以秒为单位
        messageBundle.setCacheSeconds(5);
        messageBundle.setBasenames("classpath:messages/messages");
        messageBundle.setDefaultEncoding(StandardCharsets.UTF_8.name());
        messageBundle.setUseCodeAsDefaultMessage(true);
        return messageBundle;
    }

}
